#include "SpikyBoard.h"
#include "raylib.h"
#include "PathManager.h"
#include <iostream>

// SpikyBoard 构造函数
SpikyBoard::SpikyBoard(float x, float y, const GameConfig& gameConfig) 
    : Board(x, y, gameConfig), damageTimer(0.0f) {
    type = "SpikyBoard";
    color = RED; // 尖刺板使用红色
    
    // 加载尖刺纹理，使用跨平台路径
    std::string spineTexturePath = PathManager::GetResourcePath() + "spine.bmp";
    spineTexture = LoadTexture(spineTexturePath.c_str());
    if (spineTexture.id == 0) {
        std::cout << "警告: 无法加载尖刺纹理 " << spineTexturePath << std::endl;
    }
}

// SpikyBoard 析构函数
SpikyBoard::~SpikyBoard() {
    // 卸载纹理（如果已加载）
    if (spineTexture.id != 0) {
        UnloadTexture(spineTexture);
    }
}

// 更新尖刺板
void SpikyBoard::Update() {
    // 调用基类更新
    Board::Update();
    
    // 尖刺板不需要特殊更新逻辑
}

// 绘制尖刺板
void SpikyBoard::Draw() {
    if (!active) return;
    
    Rectangle rect = GetRect();
    
    // 先绘制基础板子（红色）
    DrawRectangleRec(rect, color);
    DrawRectangleLinesEx(rect, 2.0f, BLACK);
    
    // 如果有纹理，则在板子中央绘制尖刺纹理
    if (spineTexture.id != 0) {
        // 计算纹理在板子上的居中位置
        float x = position.x + (config.boardWidth - spineTexture.width) / 2;
        float y = position.y + (config.boardHeight - spineTexture.height) / 2;
        
        // 绘制尖刺纹理
        DrawTexture(spineTexture, static_cast<int>(x), static_cast<int>(y), WHITE);
    }
}

// 玩家落在尖刺板上
void SpikyBoard::OnPlayerLand() {
    // 尖刺板不需要破裂效果
    isCracked = false;
    crackTimer = 0.0f;
}

// 尖刺板不是可破坏的
bool SpikyBoard::IsBreakable() const {
    return false;
}